/**
 * 字符串拼接工具
 */
class StringBuilder {
    constructor() {
        this.ret = new Array();
    }

    /**
     * 追加一段文本，非字符串类型，会被转为字符串处理
     *
     * @param obj 文本片段
     * @returns {StringBuilder} this
     */
    append(obj) {
        this.ret.push(obj);
        return this;
    }

    /**
     * 追加一个数字
     *
     * 允许预设长度，如果不足则自动补 0
     *
     * @param num 数字或字符串
     * @param len 期望结果长度
     * @returns 填充后的字符串
     */
    appendNumber(num, len) {
        const str = num.toString();
        const paddingLength = len - str.length;

        if (paddingLength <= 0) return this.append(str);
        if (paddingLength === 1) return this.append(`0${str}`);
        if (paddingLength === 2) return this.append(`00${str}`);

        return this.append(`${Array(paddingLength).fill(0).join('')}${str}`);
    }

    /**
     * 构建一个字符串
     *
     * @returns {string} 拼接出来的字符串
     */
    build() {
        return this.ret.join('');
    }

    /**
     * 构建一个字符串
     *
     * @returns {string} 拼接出来的字符串
     */
    toString() {
        return this.ret.join('');
    }
}

export default StringBuilder;